package com.emmmya.ocs.modules.system.service;


import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.emmmya.ocs.common.base.BaseService;
import com.emmmya.ocs.modules.system.entity.User;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;


public interface UserService extends BaseService<User,Long> {

    /**
     * 根据账号查询User，结果包含密码的查询
     * @param name 账号
     * @return
     */
    User findByUsername(String name);

    /**
     * 根据账号查询User，结果不包含密码的查询
     * @param username 账号
     * @return
     */
    User findByUsernameP(String username);

    /**
     * 基本参数更新
     * @param user
     * @return
     */
    Integer updateUser(User user);

    /**
     * 即便懒加载也可以使用此更新。保证role不清空
     * @param user
     * @return
     */
    Integer updateEnhance(User user);

    /**
     * 使用jpa得多条件查询和jpa的分页查询
     * @param user     查询的条件
     * @param pageable 分页参数
     * @return
     */
    Page<User> findAllByVoAndLimit(User user, Pageable pageable);

    /**
     * 根据id查询user，这个不携带user的role
     * @param id
     * @return
     */
    User getUserById(Long id);

    void getListByPage(IPage<User> page, Wrapper<User> wrapper);

    void disableUser(Long id);

}
